package experiment2;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-11-09
 * Time:12:55
 */
public class TestApI {
    /*
    首先获取系统当前时间，并格式化成 xxxx 年x 月x 日的形式打印出来
     */
    public  static  void test1(){
        //根据当前系统时间创建日期对象
        Date date = new Date();

        //格式化日期
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd : hh ：mm : ss");

        System.out.println(simpleDateFormat.format(date));

    }
    /*
    然后随机获取 a~z 中 4 个字符，并将这 4 个字符拼接成字符串输出，如果拼接的字符串中包含字符 a，则将字符a 替换为@，并将替换后的字符串输出。
     */
    public static void test2(){
       char[] str = new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

       char[] arr = new char[4];

       Random random = new Random();

        for (int i = 0; i < arr.length; i++) {
            arr[i]=str[random.nextInt(26)];//随机生成0~25的数字
        }

        //数组转换成成数组
        String s = new String(arr);


        //假设一个字符串全都是a-知识点：字符串替换,由双引号引起的字符串
        s=s.replaceAll("a","@");
        System.out.println(s);



       }

    /*
    最后打印第（1）步和第（2）步执行花费的总时长
   （可以在第一步执行前获取系统时间，在第（2）步执行后获取系统时间，然后进行相减）
    */
    public static void test3(){
        long begin1 = System.currentTimeMillis();

        test1();

        long end1 = System.currentTimeMillis();

        long count1 = end1 - begin1;

        long begin2 = System.currentTimeMillis();

        System.out.println("第一次实验运行时间："+count1);

        test2();

        long end2 = System.currentTimeMillis();

        long count2 = end2 - begin2;

        System.out.println("第二次实验运行时间："+count2);

        System.out.println("两个实验运行时间之差："+ (count1-count2));
        //可以发现这两个实验运行时间之差是随机的

    }
    /*
    使用正则表达式模拟验证手机号的过程，按照以下要求实现相关代码：

        提示用户在控制台输入手机号，用一个字符串对其进行保存

        判断该手机号位数是否是 11 位
1
        判断该手机号，是否都是数字

        判断改手机号最后 3 为数字如果是相同数字则认为是靓号。
     */
    public static void test4(){
        Scanner sc = new Scanner(System.in);
        //连续输入字符
        while (true){
            System.out.println("请输入您的电话号码：");
            String tel = sc.next();
            //校验手机号（正则表达式）
            if (tel.matches("1[3-9]\\d{9}")){
                System.out.println("验证正确！！！");
                //验证这个手机号是否是靓码
                if(tel.matches("1[3-9]\\\\d{6}(\\\\d)\\\\1{2}")){
                    System.out.println("这个手机号是靓码！");

                }
                return;


            }else{
                System.out.println("验证错误！！！");
                return;
            }
        }

    }
    /*
    使用 String 的常用方法和 StringBuffer 类模拟验证手机号的过程，按照以下要求实现相关代码

        提示用户在控制台输入手机号，用一个字符串对其进行保存

        判断该手机号位数是否是 11 位

        判断该手机号，是否都是数字

        判断改手机号最后 3 为数字，如果是相同数字则认为是靓号
     */
    public static void test5(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的手机号：");
        String tel = sc.next();
        //判断该手机号位数是否是 11 位
        if( tel.length() != 11 ){
            System.out.println("这个不是手机号码！输出错误！");
            return;
        }
        //判断该手机号，是否都是数字
        for (int i = 0; i < tel.length(); i++) {
            int str = tel.charAt(i);
            if( str < 48 || str > 57  ){
                System.out.println("这个不是手机号码！输出错误！");
            }
        }
       // 判断改手机号最后 3 为数字，如果是相同数字则认为是靓号

       if( tel.charAt(8) == tel.charAt(9) && tel.charAt(8) == tel.charAt(10)){
           System.out.println("这个号码是靓码");
       }


    }

    public static void main(String[] args) {
        System.out.println("实验1的结果：");
        test1();
        System.out.println("实验2的结果：");
        test2();
        System.out.println("实验3的结果：");
        test3();
        System.out.println("实验4的结果：");
        test4();
        System.out.println("实验5的结果：");
        test5();


    }
}
